package _06同步问题;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
 * @author Administrator
 */
public class SellerRunnable3 implements Runnable {

	int count = 100;

	// 创建锁对象
	Lock l = new ReentrantLock();

	// lock()
	// unlock()
	// tryLock()

	@Override
	public void run() {
		while (count > 0) {
			// 解决同步问题方式1

			// 用法1 和 和前面差不多
//			// 锁住
//			l.lock();
//			
//			if(count>0)
//			{
//				count--;
//				System.out.println(Thread.currentThread().getName()+"售出一张票，剩下"+count+"票");
//			}
//			
//			// 解锁
//			l.unlock();

			// 尝试加锁
			if (l.tryLock()) {
				if (count > 0) {
					count--;
					System.out.println(Thread.currentThread().getName() + "售出一张票，剩下" + count + "票");
				}
				// 解锁
				l.unlock();
			} else {
				//
				System.out.println(Thread.currentThread().getName() + "别人在卖票,我休息一下");
			}

			try {
				Thread.sleep(100);

			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		System.out.println(Thread.currentThread().getName() + "售票结束");

	}

}
